thread + udalost pri ukonceni
Otázka od: Karolina Nemanska
2. 4. 2004 16:33
Ahoj,
delam aplikaci s vlakny. Pri stisku buttonu vytvorim htread a spustim. A
chci, ay thread dokonci akci, abz yavolal nejakou metodu formulare pro vypis
vysledku. Potud vse vim jak... Ale kde pak mam onen thread zrusit? Kdyz dam
free do one metody, tak to hazi chybu, pokud nastavim threadu
freeonterminate, vypada to, ze se thread nezrusi..
form.onclick
begin
...
thread.resume
end;
form.onthreaddone
begin
text:='vysledek je';
// kdyz dam tady free, tak to hlasi chybu
end;
thread.execute
begin
neco delej
synchronize(zavolejthreaddone);
end
thread.threaddone
begin
onthreaddone
end
Karolina
Odpovedá: Petr Vones
2. 4. 2004 16:53
From: "Karolina Nemanska" <lafidek@seznam.cz>
> delam aplikaci s vlakny. Pri stisku buttonu vytvorim htread a spustim. A
> chci, ay thread dokonci akci, abz yavolal nejakou metodu formulare pro vypis
> vysledku. Potud vse vim jak... Ale kde pak mam onen thread zrusit? Kdyz dam
Prvni zpusob je nastavit v konstruktoru FreeOnTerminate = True, potom se
objekt threadu zrusi jakmile se dokonci kod v metode Execute.
Druhy zpusob je postupne volani metod:
Terminate
WaitFor
Free
V udalosti OnTerminate nelze uvolnit vlastni objekt threadu.
Petr Vones